With the falling cost of volatile memory, for example dynamic random access memory (“DRAM”), and corresponding increase in capacity, it is now feasible for many applications to maintain a substantial amount of their state in DRAM memory, namely gigabytes of DRAM. The result is faster, more predictable response, compared to paging this state back and forth between secondary storage, such as disk and main memory, conventionally DRAM.
This has widened the gap in predictability of performance between applications that fit in memory and those that do not, for example those that require several terabytes of data rather than just several gigabytes of memory. Moreover, these large applications suffer further because of the software overheads and latency to fetch data from a secondary storage.